判断密码强度(Python)

您所在的位置:网站首页 安徽联通广播 频道 判断密码强度(Python)

判断密码强度(Python)

2023-12-23 23:37| 来源: 网络整理| 查看: 265

用户设置密码后,判断密码强度是否合格,判断规则:1.密码长度不小于8;2.密码中必须包含字母;3.密码中必须包含数字。

1.0:isnumeric()函数可以判断字符串中是否只含有数字,若字符串中只含数字,返回True;isalpha()函数可以判断字符串字符串中是否只含有字母,若字符串中只包含字母,返回True。初始化密码强度strength_level为0,每满足一个判断规则就加1。判断密码强度时,只要含有字母(不是只含有字母)即可,因此对输入的密码字符串进行遍历,遇到字母后停止遍历,如果密码中含有字母,strength_level+1。对数字的判断同样处理。当密码强度为3时,给用户提示:密码强度合格,否则说明不合格原因。

""" 判断密码强度 1.0:密码长度大于8 包含数字 包含字母 """ def check_number_exit(password): """ 判断是否含有数字 """ for x in password: if x.isnumeric(): return True return False def check_letter_exit(password): """ 判断是否含有字母 """ for x in password: if x.isalpha(): return True return False def main(): """ 主函数 """ password_str = input("请输入密码:") strength_level = 0 #规则1:密码长度大于8 if len(password_str) >= 8: strength_level += 1 else: print("抱歉!密码长度应不小于8位!") #规则2:包含数字 if check_number_exit(password_str): strength_level +=1 else: print("抱歉!密码中应包含数字!") #规则3:包含数字 if check_letter_exit(password_str): strength_level +=1 else: print("抱歉!密码中应包含字母!") if strength_level ==3: print("您的密码强度合格!") else: print("您设置的密码强度不合格!") if __name__=="__main__": main()

2.0:主要是终止循环(break)的用法。对判断是否含有字母和数字的函数进行了优化,同时改进主函数,使用户可以多次设置密码。设置输入密码次数 times=5,用户输入密码不合格时,提醒用户重新输入,同时times-1,若用户输入的密码合格,则直接跳出循环。当用户输入5 次后密码仍然不合格时,提醒用户输入次数过多。

""" 判断密码强度 2.0: 终止循环,限定输入密码的次数 """ def check_number_exit(password): """ 判断是否含有数字 """ number = False for x in password: if x.isnumeric(): number = True break return number def check_letter_exit(password): """ 判断是否含有字母 """ letter = False for x in password: if x.isalpha(): letter = True break return letter def main(): """ 主函数 """ times = 5 while(times >0 ): password_str = input("请输入密码:") strength_level = 0 #规则1:密码长度大于8 if len(password_str) >= 8: strength_level += 1 else: print("抱歉!密码长度应不小于8位!") #规则2:包含数字 if check_number_exit(password_str): strength_level +=1 else: print("抱歉!密码中应包含数字!") #规则3:包含数字 if check_letter_exit(password_str): strength_level +=1 else: print("抱歉!密码中应包含字母!") if strength_level ==3: print("您的密码强度合格!") break else: print("您设置的密码强度不合格!") times -= 1 print() if times == 0: print("您输入密码次数超过已5次,暂不可用!") if __name__=="__main__": main()

3.0:将设置的密码及对应的强度以及强度级别保存到文件中。定义密码强度级别,1:弱;2:中;2:强。文件的操作:f = open(),括号中输入文件路径以及打开方式(r:只读,文件不存在时报错;w:只写,文件不存在时自动新建文件;r+:可读可写;a:可以持续性输入,保留原来的输入结果)。f.write()写入内容。f.close()关闭文件。文件打开要在判断密码强度是否合格之前,否则只能保存合格的密码。

""" 判断密码强度 3.0:将设置的密码以及对应的强度保存到文件中 """ def check_number_exit(password): """ 判断是否含有数字 """ number = False for x in password: if x.isnumeric(): number = True break return number def check_letter_exit(password): """ 判断是否含有字母 """ letter = False for x in password: if x.isalpha(): letter = True break return letter def main(): times = 5 while(times >0 ): password_str = input("请输入密码:") strength_level = 0 #规则1:密码长度大于8 if len(password_str) >= 8: strength_level += 1 else: print("抱歉!密码长度应不小于8位!") #规则2:包含数字 if check_number_exit(password_str): strength_level +=1 else: print("抱歉!密码中应包含数字!") #规则3:包含数字 if check_letter_exit(password_str): strength_level +=1 else: print("抱歉!密码中应包含字母!") if strength_level == 1: level = "弱" elif strength_level == 2: level = "中" else: level = "强" f = open("password.3.0.txt","a") f.write("密码:{}\t强度:{}\t级别:{}\n".format(password_str,strength_level,level)) f.close() if strength_level ==3: print("您的密码强度合格!") break else: print("您设置的密码强度不合格!") times -= 1 print() if times == 0: print("您输入密码次数超过已5次,暂不可用!") if __name__=="__main__": main()

4.0:读取文件中的密码(只截取读取文件的代码)。以只读的方式打开文件,g.read():读取所有的文件信息,返回一个包含所有文件信息的字符串;g.readline()返回值为文件下一行内容的字符串;g.readlines():返回值为整个文件内容的列表,每项是以换行为结尾的一行字符串。关于文件信息的遍历有两种方式:(1)for line in g (2)for line in g.readlines()

g = open("password.3.0.txt", "r") #read = g.read() #print(read) #line = g.readline() #print(line) #lines = g.readlines() #print(lines) #for line in g: # print(line) for line in g.readlines(): print(line)

5.0:面向对象,定义一个密码工具类,首先定义密码属性,然后写入判断是否含有字母和数字的函数,最后写入计算密码强度的函数。

""" 判断密码强度 5.0:面向对象,定义一个密码工具类 """ class PasswordTool: #自身属性 def __init__(self,password): self.password = password self.strength_level = 0 self.level = "" def check_number_exit(self): number = False for x in self.password: if x.isnumeric(): number = True break return number def check_letter_exit(self): letter = False for x in self.password: if x.isalpha(): letter = True break return letter def password_tool(self): if len(self.password) >= 8: self.strength_level += 1 else: print("抱歉!密码长度应不小于8位!") if self.check_number_exit(): self.strength_level += 1 else: print("抱歉!密码中应包含数字!") if self.check_letter_exit(): self.strength_level += 1 else: print("抱歉!密码中应包含字母!") if self.strength_level == 1: self.level = "弱" elif self.strength_level == 2: self.level = "中" else: self.level = "强" def main(): times = 5 while(times >0 ): password_str = input("请输入密码:") example = PasswordTool(password_str) example.password_tool() f = open("password.5.0.txt","a") f.write("密码:{}\t强度:{}\t级别:{}\n".format(example.password,example.strength_level,example.level)) f.close() if example.strength_level ==3: print("您的密码强度合格!") break else: print("您设置的密码强度不合格!") times -= 1 print() if times == 0: print("您输入密码次数超过已5次,暂不可用!") if __name__=="__main__": main()

6.0:定义一个文件操作类。将关于文件读写操作的函数写入类中。

""" 判断密码强度 6.0:面向对象,定义一个文件操作类 """ class Filetool: def __init__(self,filepath): self.filepath = filepath def read_from_file(self): f = open(self.filepath,"r") lines = f.readlines() f.close() return lines def write_to_file(self,line): f = open(self.filepath,"a") f.write(line) f.close() class PasswordTool: #自身属性 def __init__(self,password): self.password = password self.strength_level = 0 self.level = "" def check_number_exit(self): number = False for x in self.password: if x.isnumeric(): number = True break return number def check_letter_exit(self): letter = False for x in self.password: if x.isalpha(): letter = True break return letter def password_tool(self): if len(self.password) >= 8: self.strength_level += 1 else: print("抱歉!密码长度应不小于8位!") if self.check_number_exit(): self.strength_level += 1 else: print("抱歉!密码中应包含数字!") if self.check_letter_exit(): self.strength_level += 1 else: print("抱歉!密码中应包含字母!") if self.strength_level == 1: self.level = "弱" elif self.strength_level == 2: self.level = "中" else: self.level = "强" def main(): times = 5 path = "pwd_level6.0.txt" f = Filetool(path) while(times >0 ): password_str = input("请输入密码:") example = PasswordTool(password_str) example.password_tool() line = "密码:{}\t强度:{}\t级别:{}\n".format(example.password,example.strength_level,example.level) f.write_to_file(line) if example.strength_level ==3: print("您的密码强度合格!") break else: print("您设置的密码强度不合格!") times -= 1 print() if times == 0: print("您输入密码次数超过已5次,暂不可用!") word = f.read_from_file() print(word) if __name__=="__main__": main()

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3